from langchain_core.prompts import ChatPromptTemplate
from datetime import datetime
from Agents.llms import LLMFactory
from tools.product_tools import search_product,purchase_product,recommend_product
from Agents.AssittantFactory import Assistant
from Agents.RouteTools import CompleteOrEscalate

product_assittant_prompt = ChatPromptTemplate.from_messages(
    [
        (

            "system",
            "您是处理关于商品的专业助理。您可以搜索商品信息，并根据商品信息给出建议。你也可以帮助用户购买商品 "
            "主助理在用户需要帮助咨询或购买商品时将工作委托给您。 "
            "在搜索时，保持持久性。如果第一次搜索没有返回结果，扩展您的查询范围。 "
            "如果需要更多信息或客户改变主意，将任务回传给主助理。"
            "记住，只有在相关工具成功使用后，咨询或购买才算完成。"
            "\n\n当前用户信息:\n<user_info>\n{user_info}\n</user_info>"
        ),
        ("placeholder", "{messages}"),
    ]
)


product_safe_tools = [search_product,recommend_product]
product_sensitive_tools = [purchase_product]


llm = LLMFactory.create_production_llm()
chain = product_assittant_prompt | llm.bind_tools(
    product_safe_tools+product_sensitive_tools+[CompleteOrEscalate])

product_assistant = Assistant(chain)
